/**
	Author:BulletYuan
	UpdateTime:2017.8.16
	Version:1.1.1
	
	该组件用于全局预加载图片或图片集
	可定义加载延迟时间，加载成功事件，加载失败事件，等待事件，加载中事件，加载失败图片地址，加载中占位图片地址
	
	用法1：
	loadImage([
		"pic1.jpg","pic2.jpg","pic3.jpg",...
	]).load({
		timeout			加载延迟时间
		success			加载成功事件
		error			加载失败事件
		waitting		等待事件
		loading			加载中事件
		failImgurl		加载失败图片地址
		loadingImgurl	加载中占位图片地址
	})
	
	用法2：
	loadImage("pic1.jpg").load({
		timeout			加载延迟时间
		success			加载成功事件
		error			加载失败事件
		waitting		等待事件
		loading			加载中事件
		failImgurl		加载失败图片地址
		loadingImgurl	加载中占位图片地址
	})
	
	用法3：
	var l=loadImage("pic1.jpg");
	l.load({
		timeout			加载延迟时间
		success			加载成功事件
		error			加载失败事件
		waitting		等待事件
		loading			加载中事件
		failImgurl		加载失败图片地址
		loadingImgurl	加载中占位图片地址
	})
	
**/
(function(window){
	function a(){
		var attr={};
		this.set=function(k,v){
			attr[k]=v;
		};
		this.get=function(k){
			return attr[k];
		};
	}
	
	a.prototype={
		init:function(arr){
			this.set("UrlArray",arr);
			return this;
		},
		load:function(params){
			var arr,that;
			that=this;
			params=params || {};
			arr=this.get("UrlArray");
			if(params.timeout&&params.timeout>0)params.waitting()||(function(){})();
			setTimeout(function(){
				if(arr){
					for(i=0;i<arr.length;i++){
						var img=new Image();
						params.loading?params.loading(img):that.onloading(img,params.loadingImgurl);
						img.onload=function(){
							(params.success?params.success:that.onload(img))
						};
						img.onerror=function(){
							(params.error?params.error:that.onerror(img,params.failImgurl))
						};
						img.src=arr[i];
					}
				}
			},(params.timeout || 0))
		},
		onloading:function(img){
			if(typeof arguments[1] === "string") img.src=arguments[1];
		},
		onload:function(img){
			document.body.appendChild(img); 
		},
		onerror:function(img){
			if(typeof arguments[1] === "string") img.src=arguments[1];
		}
	};
	
	var obj=new a();
	window.loadImage=function(arr){
		if(typeof arr==="string"){
			var narr=new Array();
			narr.push(arr);
			arr=narr;
		}
		arr=arr || [];
		obj.init(arr);
		return obj;
	}
})(window);